/**
 * Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved.
 * <p/>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package easemob.chatuidemo.activity;

import android.support.v4.app.Fragment;

/**
 * 联系人列表页
 */
public class ContactlistFragment extends Fragment {
//    public static final String TAG = "ContactlistFragment";
//    private ContactAdapter adapter;
//    private List<User> contactList;
//    private ListView listView;
//    private boolean hidden;
//    private Sidebar sidebar;
//    private List<String> blackList;
//    HXContactSyncListener contactSyncListener;
//    HXBlackListSyncListener blackListSyncListener;
//    HXContactInfoSyncListener contactInfoSyncListener;
//    View progressBar;
//    Handler handler = new Handler();
//    private User toBeProcessUser;
//    private String toBeProcessUsername;
//
//    class HXContactSyncListener implements HXSDKHelper.HXSyncListener {
//        @Override
//        public void onSyncSucess(final boolean success) {
//            EMLog.d(TAG, "on contact list sync success:" + success);
//            ContactlistFragment.this.getActivity().runOnUiThread(new Runnable() {
//                public void run() {
//                    getActivity().runOnUiThread(new Runnable() {
//
//                        @Override
//                        public void run() {
//                            if (success) {
//                                progressBar.setVisibility(View.GONE);
//                                refresh();
//                            } else {
//                                String s1 = "获取列表失败，请重试";
//                                Toast.makeText(getActivity(), s1, Toast.LENGTH_SHORT).show();
//                                progressBar.setVisibility(View.GONE);
//                            }
//                        }
//
//                    });
//                }
//            });
//        }
//    }
//
//    class HXBlackListSyncListener implements HXSDKHelper.HXSyncListener {
//
//        @Override
//        public void onSyncSucess(boolean success) {
//            getActivity().runOnUiThread(new Runnable() {
//
//                @Override
//                public void run() {
//                    blackList = EMContactManager.getInstance().getBlackListUsernames();
//                    refresh();
//                }
//
//            });
//        }
//
//    }
//
//    ;
//
//    class HXContactInfoSyncListener implements HXSDKHelper.HXSyncListener {
//
//        @Override
//        public void onSyncSucess(final boolean success) {
//            EMLog.d(TAG, "on contactinfo list sync success:" + success);
//            getActivity().runOnUiThread(new Runnable() {
//
//                @Override
//                public void run() {
//                    progressBar.setVisibility(View.GONE);
//                    if (success) {
//                        refresh();
//                    }
//                }
//            });
//        }
//
//    }
//
//    @Override
//    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//        return inflater.inflate(R.layout.partner_friends_contact_list, container, false);
//    }
//
//    @Override
//    public void onActivityCreated(Bundle savedInstanceState) {
//        super.onActivityCreated(savedInstanceState);
//        //防止被T后，没点确定按钮然后按了home键，长期在后台又进app导致的crash
//        if (savedInstanceState != null && savedInstanceState.getBoolean("isConflict", false))
//            return;
//        listViewConFriends = (ListView) getView().findViewById(R.id.);
//        sidebar = (Sidebar) getView().findViewById(R.id.sidebar);
//        sidebar.setListView(listView);
//
//        //黑名单列表
//        blackList = EMContactManager.getInstance().getBlackListUsernames();
//        contactList = new ArrayList<User>();
//        // 获取设置contactlist
//        getContactList();
//
//
//        // 设置adapter
//        adapter = new ContactAdapter(getActivity(), R.layout.row_contact, contactList);
//        listView.setAdapter(adapter);
//        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//
//            @Override
//            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//                String username = adapter.getItem(position).getUsername();
//                if (Constant.NEW_FRIENDS_USERNAME.equals(username)) {
//                    // 进入申请与通知页面
//                    User user = ((DemoHXSDKHelper) HXSDKHelper.getInstance()).getContactList().get(Constant.NEW_FRIENDS_USERNAME);
//                    user.setUnreadMsgCount(0);
//                    startActivity(new Intent(getActivity(), NewFriendsMsgActivity.class));
//                } else if (Constant.GROUP_USERNAME.equals(username)) {
//                    // 进入群聊列表页面
//                    startActivity(new Intent(getActivity(), GroupsActivity.class));
//                } else if (Constant.CHAT_ROOM.equals(username)) {
//                    //进入聊天室列表页面
//                    startActivity(new Intent(getActivity(), PublicChatRoomsActivity.class));
//                } else if (Constant.CHAT_ROBOT.equals(username)) {
//                    //进入Robot列表页面
//                    startActivity(new Intent(getActivity(), RobotsActivity.class));
//                } else {
//                    // demo中直接进入聊天页面，实际一般是进入用户详情页
//                    startActivity(new Intent(getActivity(), ChatActivity.class).putExtra("userId", adapter.getItem(position).getUsername()));
//                }
//            }
//        });
//
//        ImageView addContactView = (ImageView) getView().findViewById(R.id.iv_new_contact);
//        // 进入添加好友页
//        addContactView.setOnClickListener(new View.OnClickListener() {
//
//            @Override
//            public void onClick(View v) {
//                startActivity(new Intent(getActivity(), AddContactActivity.class));
//            }
//        });
//        registerForContextMenu(listView);
//
//        progressBar = (View) getView().findViewById(R.id.progress_bar);
//
//        contactSyncListener = new HXContactSyncListener();
//        HXSDKHelper.getInstance().addSyncContactListener(contactSyncListener);
//
//        blackListSyncListener = new HXBlackListSyncListener();
//        HXSDKHelper.getInstance().addSyncBlackListListener(blackListSyncListener);
//
//        contactInfoSyncListener = new HXContactInfoSyncListener();
//        ((DemoHXSDKHelper) HXSDKHelper.getInstance()).getUserProfileManager().addSyncContactInfoListener(contactInfoSyncListener);
//
//        if (!HXSDKHelper.getInstance().isContactsSyncedWithServer()) {
//            progressBar.setVisibility(View.VISIBLE);
//        } else {
//            progressBar.setVisibility(View.GONE);
//        }
//    }
//
//    @Override
//    public void onHiddenChanged(boolean hidden) {
//        super.onHiddenChanged(hidden);
//        this.hidden = hidden;
//        if (!hidden) {
//            refresh();
//        }
//    }
//
//    @Override
//    public void onResume() {
//        super.onResume();
//        if (!hidden) {
//            refresh();
//        }
//    }
//
//    /**
//     * 删除联系人
//     *
//     * @param toDeleteUser
//     */
//    public void deleteContact(final User tobeDeleteUser) {
//        String st1 = getResources().getString(R.string.deleting);
//        final String st2 = getResources().getString(R.string.Delete_failed);
//        final ProgressDialog pd = new ProgressDialog(getActivity());
//        pd.setMessage(st1);
//        pd.setCanceledOnTouchOutside(false);
//        pd.show();
//        new Thread(new Runnable() {
//            public void run() {
//                try {
//                    EMContactManager.getInstance().deleteContact(tobeDeleteUser.getUsername());
//                    // 删除db和内存中此用户的数据
//                    UserDao dao = new UserDao(getActivity());
//                    dao.deleteContact(tobeDeleteUser.getUsername());
//                    ((DemoHXSDKHelper) HXSDKHelper.getInstance()).getContactList().remove(tobeDeleteUser.getUsername());
//                    getActivity().runOnUiThread(new Runnable() {
//                        public void run() {
//                            pd.dismiss();
//                            adapter.remove(tobeDeleteUser);
//                            adapter.notifyDataSetChanged();
//
//                        }
//                    });
//                } catch (final Exception e) {
//                    getActivity().runOnUiThread(new Runnable() {
//                        public void run() {
//                            pd.dismiss();
//                            Toast.makeText(getActivity(), st2 + e.getMessage(), 1).show();
//                        }
//                    });
//
//                }
//
//            }
//        }).start();
//
//    }
//
//    /**
//     * 把user移入到黑名单
//     */
//    private void moveToBlacklist(final String username) {
//        final ProgressDialog pd = new ProgressDialog(getActivity());
//        String st1 = getResources().getString(R.string.Is_moved_into_blacklist);
//        final String st2 = getResources().getString(R.string.Move_into_blacklist_success);
//        final String st3 = getResources().getString(R.string.Move_into_blacklist_failure);
//        pd.setMessage(st1);
//        pd.setCanceledOnTouchOutside(false);
//        pd.show();
//        new Thread(new Runnable() {
//            public void run() {
//                try {
//                    //加入到黑名单
//                    EMContactManager.getInstance().addUserToBlackList(username, false);
//                    getActivity().runOnUiThread(new Runnable() {
//                        public void run() {
//                            pd.dismiss();
//                            Toast.makeText(getActivity(), st2, 0).show();
//                            refresh();
//                        }
//                    });
//                } catch (EaseMobException e) {
//                    e.printStackTrace();
//                    getActivity().runOnUiThread(new Runnable() {
//                        public void run() {
//                            pd.dismiss();
//                            Toast.makeText(getActivity(), st3, 0).show();
//                        }
//                    });
//                }
//            }
//        }).start();
//
//    }
//
//    // 刷新ui
//    public void refresh() {
//        try {
//            // 可能会在子线程中调到这方法
//            getActivity().runOnUiThread(new Runnable() {
//                public void run() {
//                    getContactList();
//                    adapter.notifyDataSetChanged();
//                }
//            });
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    @Override
//    public void onDestroy() {
//        if (contactSyncListener != null) {
//            HXSDKHelper.getInstance().removeSyncContactListener(contactSyncListener);
//            contactSyncListener = null;
//        }
//
//        if (blackListSyncListener != null) {
//            HXSDKHelper.getInstance().removeSyncBlackListListener(blackListSyncListener);
//        }
//
//        if (contactInfoSyncListener != null) {
//            ((DemoHXSDKHelper) HXSDKHelper.getInstance()).getUserProfileManager().removeSyncContactInfoListener(contactInfoSyncListener);
//        }
//        super.onDestroy();
//    }
//
//    public void showProgressBar(boolean show) {
//        if (progressBar != null) {
//            if (show) {
//                progressBar.setVisibility(View.VISIBLE);
//            } else {
//                progressBar.setVisibility(View.GONE);
//            }
//        }
//    }
//
//    /**
//     * 获取联系人列表，并过滤掉黑名单和排序
//     */
//    private void getContactList() {
//        contactList.clear();
//        //获取本地好友列表
//        Map<String, User> users = ((DemoHXSDKHelper) HXSDKHelper.getInstance()).getContactList();
//        Iterator<Map.Entry<String, User>> iterator = users.entrySet().iterator();
//        while (iterator.hasNext()) {
//            Map.Entry<String, User> entry = iterator.next();
//            if (!entry.getKey().equals(Constant.NEW_FRIENDS_USERNAME)
//                    && !entry.getKey().equals(Constant.GROUP_USERNAME)
//                    && !entry.getKey().equals(Constant.CHAT_ROOM)
//                    && !entry.getKey().equals(Constant.CHAT_ROBOT)
//                    && !blackList.contains(entry.getKey()))
//                contactList.add(entry.getValue());
//        }
//        // 排序
//        Collections.sort(contactList, new Comparator<User>() {
//
//            @Override
//            public int compare(User lhs, User rhs) {
//                return lhs.getUsername().compareTo(rhs.getUsername());
//            }
//        });
//
//        if (users.get(Constant.CHAT_ROBOT) != null) {
//            contactList.add(0, users.get(Constant.CHAT_ROBOT));
//        }
//        // 加入"群聊"和"聊天室"
//        if (users.get(Constant.CHAT_ROOM) != null)
//            contactList.add(0, users.get(Constant.CHAT_ROOM));
//        if (users.get(Constant.GROUP_USERNAME) != null)
//            contactList.add(0, users.get(Constant.GROUP_USERNAME));
//
//        // 把"申请与通知"添加到首位
//        if (users.get(Constant.NEW_FRIENDS_USERNAME) != null)
//            contactList.add(0, users.get(Constant.NEW_FRIENDS_USERNAME));
//
//    }
//
//
//    @Override
//    public void onSaveInstanceState(Bundle outState) {
//        super.onSaveInstanceState(outState);
//        if (((MainActivity) getActivity()).isConflict) {
//            outState.putBoolean("isConflict", true);
//        } else if (((MainActivity) getActivity()).getCurrentAccountRemoved()) {
//            outState.putBoolean(Constant.ACCOUNT_REMOVED, true);
//        }
//
//    }
}
